﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Threading;

namespace vkontakte_client
{
    public partial class Autorisation_form : Form
    {
       
        public Autorisation_form()
        {
            InitializeComponent();
        }
        /// <summary>
        /// Событие, возникающее при загрузке формы авторизации.
        /// Попытка авторизоваться на сервере.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Autorisation_form_Load(object sender, EventArgs e)
        {
            ///<remarks>
            ///Открытие окна браузера для аутентификации пользователя на сайте ВКонтакте, последующее разрешение пользователем доступа к своим данным.
            ///</remarks>
            webBrowser1.Navigate("http://oauth.vk.com/authorize?client_id=" + GlobalWars.app_id + "&scope=friends,messages&redirect_uri=http://api.vk.com/blank.html&display=popup&response_type=token");
        }
        /// <summary>
        /// Событие возникающее при закрытии формы авторизации. Получение access_token и user_id из URL, на которую переадресовали браузер.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Autorisation_form_FormClosed(object sender, FormClosingEventArgs e)
        {
            /// <remarks>
            /// Регулярное выражение для поиса access_token и user_id в URL
            /// </remarks>
            string access_pattern = "access_token=([0-9a-zA-z]+)", user_id_pattern = "user_id=([0-9]+)";
            /// </remarks>
            /// Компиляция регулярных выражений
            /// </remarks>
            Regex access_regexp = new Regex(access_pattern), user_id_regexp = new Regex(user_id_pattern);
            /// <remarks>
            /// Поиск регулярных выражений в URL
            /// </remarks>
            Match access_match = access_regexp.Match(webBrowser1.Url.AbsoluteUri), user_id_match = user_id_regexp.Match(webBrowser1.Url.AbsoluteUri);
            /// <remarks>
            /// Заполнение глобальных переменных полученными значениями
            /// </remarks>
            GlobalWars.Access_token = access_match.Value.Replace("access_token=", "");
            GlobalWars.User_id = user_id_match.Value.Replace("user_id=", "");
        }
    }
}
